package fr.gestproj.utils;

import javax.enterprise.context.spi.CreationalContext;
import javax.enterprise.inject.spi.Bean;
import javax.enterprise.inject.spi.BeanManager;
import javax.naming.InitialContext;
import javax.naming.NamingException;

import org.apache.commons.lang3.RandomStringUtils;

/** @author Parrot */
public abstract class UtilsMetier {

	/** nombre de caractères pour la génération du token */
	public final static int NOMBRE_CHAR_TOKEN = 15;

	/** Constructeur de la classe <code>UtilsEJB</code>. */
	public UtilsMetier() {
	}

	/** génère le token avec le nombre de caractère demandé
	 *
	 * @return {@link String} */
	public static String generationToken() {
		return RandomStringUtils.randomAlphanumeric(NOMBRE_CHAR_TOKEN);
	}

	public static <T> T getBean(Class<T> classe) {
		BeanManager bm = getBeanManager();
		Bean<T> bean = (Bean<T>) bm.getBeans(classe).iterator().next();
		CreationalContext<T> ctx = bm.createCreationalContext(bean);
		T retour = (T) bm.getReference(bean, classe, ctx);
		return retour;
	}

	public static BeanManager getBeanManager() {
		try {
			InitialContext initialContext = new InitialContext();
			return (BeanManager) initialContext.lookup("java:comp/BeanManager");
		} catch (NamingException e) {
			// TODO : LOGGER
			e.printStackTrace();
			return null;
		}
	}

}